package main

import (
	"fmt"
	"github.com/micro/mdns"
	"log"
	"time"
)

/**
micro 客户端会连接mdns
*/
func main() {
	params := mdns.DefaultParams("_foobar._tcp")

	fmt.Printf("%t", false)
	// 将双向chan赋值给输入chanel,并利用双向channel输出
	entries := make(chan *mdns.ServiceEntry)
	params.Entries = entries
	go func() {
		for item := range entries {
			fmt.Println(item)
		}
	}()

	if err := mdns.Query(params); err != nil {
		log.Panic(err)
	}

	<-params.Context.Done()
	fmt.Println("micro client over")

	//非阻塞chan，只能存放一个元素，当元素大于该值不能存放。
	name := make(chan string, 1)
	getName(name)
	fmt.Println(<-name)

	//阻塞chan，一个都不能存放，只能先读后存
	name = make(chan string)
	go func() {
		fmt.Println("sss  ", <-name)
	}()
	getName(name)

}

func getName(name chan<- string) {
	time.Sleep(time.Second * 3)
	name <- "zhangsan"
	fmt.Println("-------")
}
